<?php
$bjblocks['ext_bjblocks_taglist']='Блок "Список тегов"';
$bjblocks['ext_bjblocks_tagcloud']='Облако тегов';
$bjblocks['ext_bjblocks_seealso']='Блок "Смотрите также", в котором отображаются записи со схожими категориями(тегами)';
$bjblocks['ext_bjblocks_prevnext']='Блок, в котором отображаются следующая и предыдущая записи, если они существуют';
if(!function_exists('a')){function a(&$a,$k){return $a[$k];}}
function ext_bjblocks_seealso($numposts=10){# Блок "Смотрите также", или записи сходной тематики.
	global $_s, $_v, $_l;
	$file=$_s['tags_dir'].'/'.$_v['p'];
	if(is_numeric($_v['p'])&&is_file($file)){
	$altg=split(',',file_get_contents($file));
	$othposts=array();
	foreach($altg as $tg)$othposts=array_merge($othposts,getbytag($tg));
	$othposts=array_count_values($othposts);
	krsort($othposts,SORT_NUMERIC);
	$othposts=array_keys($othposts);
	$del=array_search($_v['p'],$othposts);
	unset($othposts[$del]);
	$othposts=array_slice($othposts,0,$numposts);
	$string='';
	foreach($othposts as $p){
		$string.='<li><a href="'.generate_link('p='.$p).'">'.a(post_info($p),'title').'</a></li>';
	}
	if($string)echo $_l['seealso_title'].'<ol>'.$string.'</ol>';
	return true;
	}
	return false;
}
function ext_bjblocks_prevnext(){
	global $_s, $_v, $_l;
	if(is_numeric($_v['p'])){
		$pts=getapts();
		sort($pts,SORT_NUMERIC);
		$cur=array_search($_v['p'],$pts);
		$ret[0]=$pts[$cur-1]?$pts[$cur-1]:false;
		$ret[1]=$pts[$cur+1]?$pts[$cur+1]:false;
		echo $_l['prevnext_title'].'<div class="prevnextigator"'.$_l['prevnext_attr'].'>'.
			($ret[0]?'<div class="prev"'.$_l['prevnext_prev_attr'].'><a href="'.generate_link('p='.$ret[0]).'">'.$_l['prevnext_b_prev'].
				a(post_info($ret[0]),'title').
			$_l['prevnext_a_prev'].'</a></div>':'').
			($ret[1]?'<div class="next"'.$_l['prevnext_next_attr'].'><a href="'.generate_link('p='.$ret[1]).'">'.$_l['prevnext_b_next'].
				a(post_info($ret[1]),'title').
			$_l['prevnext_a_next'].'</a></div>':'').
		'</div>';
		return true;
	}
	return false;
}

function ext_bjblocks_taglist(){
	global $_s, $_v, $_l;
	$d = dir($_s['tags_cache']);
	$tags_str='';
	$d->close();
	$tags = array_map('tf_decode',dir2array($_s['tags_cache']));
	asort($tags);
	foreach ($tags as $tag){
		$file=$_s['tags_cache'].'/'.tf_encode($tag);
		if(is_file($file)&&$tag!='readme.txt'&&filesize($file)>1){
		$posts=explode(',',file_get_contents($file));
		$tags_str.='<li><a href="'.generate_link('t='.$tag).'">'.$tag.'</a>('.sizeof($posts).')</li>';
		}
	}
	if($tags_str){
		echo $_l['taglist_title'].'<ul>'.$tags_str.'</ul>';
		return true;
	}
	return false;
}

function ext_bjblocks_tagcloud(){
	global $_s, $_v, $_l;
	$d = dir($_s['tags_cache']);
	while (false !== ($tag = $d->read())){
		$file=$_s['tags_cache'].'/'.$tag;
		if(is_file($file)&&$tag!='readme.txt'&&filesize($file)>1){
		$tags[$tag]=filesize($file);
		}
	}
	arsort($tags,SORT_NUMERIC);
	reset($tags);
	$max=current($tags);
	ksort($tags);
	echo $_l['tagcloud_title'].'<div class="tagcloud"'.$_l['tagcloud_attr'].'>';
	foreach($tags as $tag => $num){
		$tag=tf_decode($tag);
		echo ' <a href="'.generate_link('t='.$tag).'" style="font-size:'.(($num/$max)*100).'%; white-space:nowrap;">'.$tag.'</a>';
	}
	echo '</div>';
	$d->close();
	return true;
}

# Строки. Можно переопределить непосредственно перед вызовом функции.

#ext_bjblocks_seealso
$_l['seealso_title']='<h2>Смотрите также</h2>';

#ext_bjblocks_prevnext
$_l['prevnext_title']='';
$_l['prevnext_b_prev']='&laquo; ';
$_l['prevnext_a_prev']='';
$_l['prevnext_b_next']='';
$_l['prevnext_a_next']=' &raquo;';
$_l['prevnext_attr']=' style="overflow:hidden;"';
$_l['prevnext_prev_attr']=' style="float:left;padding:10px;text-align:right;width:50%"';
$_l['prevnext_next_attr']=' style="margin-left:50%;width:50%;padding:10px;text-align:left;"';

#ext_bjblocks_taglist
$_l['taglist_title']='<h2>Записи по категориям</h2>';

#ext_bjblocks_tagcloud
$_l['tagcloud_title']='<h2>Облако тегов</h2>';
$_l['tagcloud_attr']=' style="font-size:4em; text-align:center;"';
